import { _decorator, Component, Node } from 'cc';
import { Logger } from '../utils/logger';
const { ccclass, property } = _decorator;

/**
 * 场景基类
 * 所有游戏场景都应该继承此类
 */
@ccclass('BaseScene')
export class BaseScene extends Component {
    /** 日志管理器 */
    protected logger: Logger = new Logger();

    /** 场景名称 */
    protected sceneName: string = 'BaseScene';

    /**
     * 生命周期：加载时
     */
    protected override onLoad(): void {
        this.logger.debug(`[${this.sceneName}] Scene loading`);
        this.initializeScene();
    }

    /**
     * 生命周期：启用时
     */
    protected override onEnable(): void {
        this.logger.debug(`[${this.sceneName}] Scene enabled`);
        this.registerEvents();
    }

    /**
     * 生命周期：禁用时
     */
    protected override onDisable(): void {
        this.logger.debug(`[${this.sceneName}] Scene disabled`);
        this.unregisterEvents();
    }

    /**
     * 生命周期：销毁时
     */
    protected override onDestroy(): void {
        this.logger.debug(`[${this.sceneName}] Scene destroyed`);
        this.cleanup();
    }

    /**
     * 初始化场景
     * 子类应该重写此方法以进行自定义初始化
     */
    protected initializeScene(): void {
        this.logger.debug(`[${this.sceneName}] Initializing scene`);
    }

    /**
     * 注册事件监听
     * 子类应该重写此方法以注册自己的事件监听器
     */
    protected registerEvents(): void {
        this.logger.debug(`[${this.sceneName}] Registering events`);
    }

    /**
     * 注销事件监听
     * 子类应该重写此方法以注销自己的事件监听器
     */
    protected unregisterEvents(): void {
        this.logger.debug(`[${this.sceneName}] Unregistering events`);
    }

    /**
     * 清理场景资源
     * 子类应该重写此方法以清理自己的资源
     */
    protected cleanup(): void {
        this.logger.debug(`[${this.sceneName}] Cleaning up scene`);
    }
} 